home *** CD-ROM | disk | FTP | other *** search
Wrap
/************************************************************ Created: Friday, June 4, 1993 at 10:05AM OCEStandardMail.h C Interface to the Macintosh Libraries Copyright Apple Computer, Inc. 1990-1993 All rights reserved ************************************************************/ #ifndef __OCESTANDARDMAIL__ #define __OCESTANDARDMAIL__ #ifndef __APPLEEVENTS__ #include <AppleEvents.h> #endif #ifndef __FILES__ #include <Files.h> #endif #ifndef __OCEAUTHDIR__ #include <OCEAuthDir.h> #endif #ifndef __OCEMAIL__ #include <OCEMail.h> #endif #ifndef __WINDOWS__ #include <Windows.h> #endif #ifndef __DIALOGS__ #include <Dialogs.h> #endif #define kSMPVersion 1 #define gestaltSMPMailerVersion 'malr' #define gestaltSMPSPSendLetterVersion 'spsl' #define kSMPNativeFormatName 'natv' struct LetterSpec { unsigned long spec[3]; }; typedef struct LetterSpec LetterSpec; #define typeLetterSpec 'lttr' /* Wildcard used for filtering letter types. */ enum { FilterAnyLetter = 'ltr*', FilterAppleLetterContent = 'ltc*', FilterImageContent = 'lti*' }; struct LetterDescriptor { Boolean onDisk; union { FSSpec fileSpec; LetterSpec mailboxSpec; }u; }; typedef struct LetterDescriptor LetterDescriptor; /* SMPPSendAs values. You may add the following values together to determine how the file is sent, but you may not set both kSMPSendAsEnclosureMask and kSMPSendFileOnlyMask. This will allow you to send the letter as an image so that it will work with fax gateways and send as an enclosure as well. */ enum { kSMPSendAsEnclosureBit, /* Appears as letter with enclosures */ kSMPSendFileOnlyBit, /* Appears as a file in mailbox. */ kSMPSendAsImageBit /* Content imaged in letter */ }; /* Values of SMPPSendAs */ enum { kSMPSendAsEnclosureMask = 1<<kSMPSendAsEnclosureBit, kSMPSendFileOnlyMask = 1<<kSMPSendFileOnlyBit, kSMPSendAsImageMask = 1<<kSMPSendAsImageBit }; typedef Byte SMPPSendAs; /* Send Package Structures */ typedef pascal void (*SMPDrawImageProcPtr)(long refcon, Boolean inColor); struct SMPRecipientDescriptor { struct SMPRecipientDescriptor *next; /* Q-Link. */ OSErr result; /* result code when using the object. */ OCEPackedRecipient *recipient; /* Pointer to a Packed Address. */ unsigned long size; /* length of recipient in bytes. */ MailRecipient theAddress; /* structure points into recipient and theRID. */ RecordID theRID; /* structure points into recipient. */ }; typedef struct SMPRecipientDescriptor SMPRecipientDescriptor; typedef SMPRecipientDescriptor *SMPRecipientDescriptorPtr; struct SMPEnclosureDescriptor { struct SMPEnclosureDescriptor *next; OSErr result; FSSpec fileSpec; OSType fileCreator; /* Creator of this enclosure. */ OSType fileType; /* File Type of this enclosure. */ }; typedef struct SMPEnclosureDescriptor SMPEnclosureDescriptor; typedef SMPEnclosureDescriptor *SMPEnclosureDescriptorPtr; struct SMPLetterPB { OSErr result; /* result of operation */ RStringPtr subject; /* RString */ AuthIdentity senderIdentity; /* Letter is sent from this Identity */ SMPRecipientDescriptorPtr toList; /* Pointer to linked list */ SMPRecipientDescriptorPtr ccList; /* Pointer to linked list */ SMPRecipientDescriptorPtr bccList; /* Pointer to linked list */ ScriptCode script; /* Identifier for language */ Size textSize; /* length of body data */ Ptr textBuffer; /* body of the letter */ SMPPSendAs sendAs; /* Send as Letter,Enclosure,Image */ Byte padByte; SMPEnclosureDescriptorPtr enclosures; /* files to be enclosed */ SMPDrawImageProcPtr drawImageProc; /* For imaging */ long imageRefCon; /* For imaging */ Boolean supportsColor; /* For imaging - set to true if you application supports color imaging */ }; typedef struct SMPLetterPB SMPLetterPB; typedef SMPLetterPB *SMPLetterPBPtr; enum { kSMPAppMustHandleEventBit, kSMPAppShouldIgnoreEventBit, kSMPContractedBit, kSMPExpandedBit, kSMPMailerBecomesTargetBit, kSMPAppBecomesTargetBit, kSMPCursorOverMailerBit, kSMPCreateCopyWindowBit, kSMPDisposeCopyWindowBit }; /* Values of SMPMailerResult */ enum { kSMPAppMustHandleEventMask = 1<<kSMPAppMustHandleEventBit, kSMPAppShouldIgnoreEventMask = 1<<kSMPAppShouldIgnoreEventBit, kSMPContractedMask = 1<<kSMPContractedBit, kSMPExpandedMask = 1<<kSMPExpandedBit, kSMPMailerBecomesTargetMask = 1<<kSMPMailerBecomesTargetBit, kSMPAppBecomesTargetMask = 1<<kSMPAppBecomesTargetBit, kSMPCursorOverMailerMask = 1<<kSMPCursorOverMailerBit, kSMPCreateCopyWindowMask = 1<<kSMPCreateCopyWindowBit, kSMPDisposeCopyWindowMask = 1<<kSMPDisposeCopyWindowBit }; typedef unsigned long SMPMailerResult; /* Values of SMPMailerComponent*/ enum { kSMPOther = -1, kSMPFrom = 32, kSMPTo = 20, kSMPRegarding = 22, kSMPSendDateTime = 29, kSMPAttachments = 26, kSMPAddressOMatic = 16 }; typedef unsigned long SMPMailerComponent; enum { kSMPToAddress = kMailToBit, kSMPCCAddress = kMailCcBit, kSMPBCCAddress = kMailBccBit }; typedef MailAttributeID SMPAddressType; enum { kSMPUndoCommand, kSMPCutCommand, kSMPCopyCommand, kSMPPasteCommand, kSMPClearCommand, kSMPSelectAllCommand }; typedef unsigned short SMPEditCommand; enum {kSMPUndoDisabled, kSMPAppMayUndo, kSMPMailerUndo}; typedef unsigned short SMPUndoState; /* SMPSendFormatMask: Bitfield indicating which combinations of formats are included in, should be included or, or can be included in a letter. */ enum { kSMPNativeBit, kSMPImageBit, kSMPStandardInterchangeBit }; /* Values of SMPSendFormatMask */ enum { kSMPNativeMask = 1<<kSMPNativeBit, kSMPImageMask = 1<<kSMPImageBit, kSMPStandardInterchangeMask = 1<<kSMPStandardInterchangeBit }; typedef unsigned long SMPSendFormatMask; /* Pseudo-events passed to the clients filter proc for initialization and cleanup. */ enum { kSMPSendOptionsStart = -1, kSMPSendOptionsEnd = -2 }; /* SMPSendFormatMask: Structure describing the format of a letter. If kSMPNativeMask bit is set, the whichNativeFormat field indicates which of the client-defined formats to use. */ struct SMPSendFormat { SMPSendFormatMask whichFormats; short whichNativeFormat; /* 0 based */ }; typedef struct SMPSendFormat SMPSendFormat; struct SMPLetterInfo { OSType letterCreator; OSType letterType; RString32 subject; RString32 sender; }; typedef struct SMPLetterInfo SMPLetterInfo; enum {kSMPSave, kSMPSaveAs, kSMPSaveACopy}; typedef unsigned short SMPSaveType; typedef pascal WindowPtr (*FrontWindowProcPtr) (long clientData); typedef pascal void (*PrepareMailerForDrawingProcPtr) (WindowPtr window, long clientData); typedef pascal Boolean (*SendOptionsFilterProc) (DialogPtr theDialog, EventRecord* theEvent, short itemHit, long clientData); #define kSMPGetDimensions 4700 #define kSMPNewMailer 4701 #define kSMPDisposeMailer 4702 #define kSMPMailerEvent 4703 #define kSMPMailerEditCommand 4704 #define kSMPMailerForward 4705 #define kSMPMailerReply 4706 #define kSMPGetMailerState 4707 #define kSMPPrepareCoverPages 4708 #define kSMPDrawNthCoverPage 4709 #define kSMPBeginSave 4710 #define kSMPBeginSend 4711 #define kSMPOpenLetter 4712 #define kSMPDrawMailer 4713 #define kSMPMoveMailer 4714 #define kSMPSetSubject 4715 #define kSMPSetFromIdentity 4716 #define kSMPAddAddress 4717 #define kSMPAddAttachment 4718 #define kSMPContentChanged 4719 #define kSMPEndSave 4720 #define kSMPEndSend 4721 #define kSMPExpandOrContract 4722 #define kSMPBecomeTarget 4723 #define kSMPGetTabInfo 4724 #define kSMPClearUndo 4725 #define kSMPAttachDialog 4726 #define kSMPGetComponentSize 4727 #define kSMPGetComponentInfo 4728 #define kSMPGetListItemInfo 4729 #define kSMPAddContent 4730 #define kSMPReadContent 4731 #define kSMPGetFontNameFromLetter 4732 #define kSMPAddMainEnclosure 4733 #define kSMPGetMainEnclosureFSSpec 4734 #define kSMPAddBlock 4735 #define kSMPReadBlock 4736 #define kSMPEnumerateBlocks 4737 #define kSMPImage 4738 #define kSMPInitMailer 4741 #define kSMPGetNextLetter 4742 #define kSMPPrepareToClose 4743 #define kSMPCloseOptionsDialog 4744 #define kSMPPrepareToChange 4745 #define kSMPGetLetterInfo 4746 #define kSMPTagDialog 4747 #define kSMPSendOptionsDialog 5000 struct SMPMailerState { short mailerCount; short currentMailer; Point upperLeft; Boolean hasBeenReceived; Boolean isTarget; Boolean isExpanded; Boolean canMoveToTrash; Boolean canTag; Byte padByte2; unsigned long changeCount; SMPMailerComponent targetComponent; Boolean canCut; Boolean canCopy; Boolean canPaste; Boolean canClear; Boolean canSelectAll; Byte padByte3; SMPUndoState undoState; Str63 undoWhat; }; typedef struct SMPMailerState SMPMailerState; struct SMPSendOptions { Boolean signWhenSent; IPMPriority priority; }; typedef struct SMPSendOptions SMPSendOptions; typedef SMPSendOptions *SMPSendOptionsPtr, **SMPSendOptionsHandle; struct SMPCloseOptions { Boolean moveToTrash; Boolean addTag; RString32 tag; }; typedef struct SMPCloseOptions SMPCloseOptions; typedef SMPCloseOptions *SMPCloseOptionsPtr; /*---------------------------------------------------------------------------------------- Send Package Routines ----------------------------------------------------------------------------------------*/ #ifndef __SMPSendLetter #define __SMPSendLetter(count,selector) = { 0x203C, count, selector, 0xAA5D} #endif #ifndef __SMPImage #define __SMPImage(count,selector) = { 0x203C, count, selector, 0xAA5D} #endif #ifndef __SMPResolve #define __SMPResolve(count,selector) = { 0x203C, count, selector, 0xAA5D} #endif #ifndef __SMPMailer #define __SMPMailer(count,selector) = { 0x203C, count, selector, 0xAA5D} #endif #define kSMPSendLetter 500 #define kSMPResolveToRecipient 1100 #define kSMPNewPage 2100 #define kSMPImageErr 2101 #ifdef __cplusplus extern "C" { #endif pascal OSErr SMPSendLetter(SMPLetterPBPtr theLetter) __SMPSendLetter(2, kSMPSendLetter); pascal OSErr SMPNewPage(OpenCPicParams *newHeader) __SMPImage(2, kSMPNewPage); pascal OSErr SMPImageErr(void) __SMPImage(0, kSMPImageErr); pascal OSErr SMPResolveToRecipient(PackedDSSpecPtr dsSpec, SMPRecipientDescriptorPtr *recipientList, AuthIdentity identity) __SMPResolve(6, kSMPResolveToRecipient); pascal OSErr SMPInitMailer(long mailerVersion) __SMPMailer(2, kSMPInitMailer); pascal OSErr SMPGetDimensions(short *width, short *contractedHeight, short *expandedHeight) __SMPMailer(6, kSMPGetDimensions); pascal OSErr SMPGetTabInfo(SMPMailerComponent *firstTab, SMPMailerComponent *lastTab) __SMPMailer(4, kSMPGetTabInfo); pascal OSErr SMPNewMailer(WindowPtr window, Point upperLeft, Boolean canContract, Boolean initiallyExpanded, AuthIdentity identity, const PrepareMailerForDrawingProcPtr prepareMailerForDrawingCB, long clientData) __SMPMailer(12, kSMPNewMailer); pascal OSErr SMPPrepareToClose(WindowPtr window) __SMPMailer(2, kSMPPrepareToClose); pascal OSErr SMPCloseOptionsDialog(WindowPtr window, SMPCloseOptionsPtr closeOptions) __SMPMailer(4, kSMPCloseOptionsDialog); pascal OSErr SMPTagDialog(WindowPtr window, RString32* theTag) __SMPMailer(4, kSMPTagDialog); pascal OSErr SMPDisposeMailer(WindowPtr window, SMPCloseOptionsPtr closeOptions) __SMPMailer(4, kSMPDisposeMailer); pascal OSErr SMPMailerEvent(const EventRecord *event, SMPMailerResult *whatHappened, const FrontWindowProcPtr frontWindowCB, long clientData) __SMPMailer(8, kSMPMailerEvent); pascal OSErr SMPClearUndo(WindowPtr window) __SMPMailer(2, kSMPClearUndo); pascal OSErr SMPMailerEditCommand(WindowPtr window, SMPEditCommand command, SMPMailerResult *whatHappened) __SMPMailer(5, kSMPMailerEditCommand); pascal OSErr SMPMailerForward(WindowPtr window, AuthIdentity from) __SMPMailer(4, kSMPMailerForward); pascal OSErr SMPMailerReply(WindowPtr originalLetter, WindowPtr newLetter, Boolean replyToAll, Point upperLeft, Boolean canContract, Boolean initiallyExpanded, AuthIdentity identity, const PrepareMailerForDrawingProcPtr prepareMailerForDrawingCB, long clientData) __SMPMailer(15, kSMPMailerReply); pascal OSErr SMPGetMailerState(WindowPtr window, SMPMailerState *itsState) __SMPMailer(4, kSMPGetMailerState); pascal OSErr SMPSendOptionsDialog( WindowPtr window, Str255 documentName, StringPtr nativeFormatNames[], unsigned short nameCount, SMPSendFormatMask canSend, SMPSendFormat *currentFormat, SendOptionsFilterProc filterProc, long clientData, SMPSendFormat *shouldSend, SMPSendOptionsPtr sendOptions) __SMPMailer(19, kSMPSendOptionsDialog); pascal OSErr SMPPrepareCoverPages(WindowPtr window, short *pageCount) __SMPMailer(4, kSMPPrepareCoverPages); pascal OSErr SMPDrawNthCoverPage(WindowPtr window, short pageNumber, Boolean doneDrawingCoverPages) __SMPMailer(4, kSMPDrawNthCoverPage); pascal OSErr SMPPrepareToChange(WindowPtr window) __SMPMailer(2, kSMPPrepareToChange); pascal OSErr SMPContentChanged(WindowPtr window) __SMPMailer(2, kSMPContentChanged); pascal OSErr SMPBeginSave(WindowPtr window, const FSSpec *diskLetter, OSType creator, OSType fileType, SMPSaveType saveType, Boolean *mustAddContent) __SMPMailer(11, kSMPBeginSave); pascal OSErr SMPEndSave(WindowPtr window, Boolean okToSave) __SMPMailer(3, kSMPEndSave); pascal OSErr SMPBeginSend(WindowPtr window, OSType creator, OSType fileType, SMPSendOptionsPtr sendOptions, Boolean *mustAddContent) __SMPMailer(10, kSMPBeginSend); pascal OSErr SMPEndSend(WindowPtr window, Boolean okToSend) __SMPMailer(3, kSMPEndSend); pascal OSErr SMPOpenLetter(const LetterDescriptor *letter, WindowPtr window, Point upperLeft, Boolean canContract, Boolean initiallyExpanded, const PrepareMailerForDrawingProcPtr prepareMailerForDrawingCB, long clientData) __SMPMailer(12, kSMPOpenLetter); pascal OSErr SMPAddMainEnclosure(WindowPtr window, const FSSpec *enclosure) __SMPMailer(4, kSMPAddMainEnclosure); pascal OSErr SMPGetMainEnclosureFSSpec(WindowPtr window, FSSpec *enclosureDir) __SMPMailer(4, kSMPGetMainEnclosureFSSpec); pascal OSErr SMPAddContent(WindowPtr window, MailSegmentType segmentType, Boolean appendFlag, void *buffer, unsigned long bufferSize, StScrpRec *textScrap, Boolean startNewScript, ScriptCode script) __SMPMailer(12, kSMPAddContent); pascal OSErr SMPReadContent(WindowPtr window, MailSegmentMask segmentTypeMask, void *buffer, unsigned long bufferSize, unsigned long *dataSize, StScrpRec *textScrap, ScriptCode *script, MailSegmentType *segmentType, Boolean *endOfScript, Boolean *endOfSegment, Boolean *endOfContent, long *segmentLength, long *segmentID) __SMPMailer(25, kSMPReadContent); pascal OSErr SMPGetFontNameFromLetter(WindowPtr window, short fontNum, Str255 fontName, Boolean doneWithFontTable) __SMPMailer(6, kSMPGetFontNameFromLetter); pascal OSErr SMPAddBlock(WindowPtr window, const OCECreatorType *blockType, Boolean append, void *buffer, unsigned long bufferSize, MailBlockMode mode, unsigned long offset) __SMPMailer(12, kSMPAddBlock); pascal OSErr SMPReadBlock(WindowPtr window, const OCECreatorType *blockType, unsigned short blockIndex, void *buffer, unsigned long bufferSize, unsigned long dataOffset, unsigned long *dataSize, Boolean *endOfBlock, unsigned long *remaining) __SMPMailer(17, kSMPReadBlock); pascal OSErr SMPEnumerateBlocks(WindowPtr window, unsigned short startIndex, void *buffer, unsigned long bufferSize, unsigned long *dataSize, unsigned short *nextIndex, Boolean *more) __SMPMailer(13, kSMPEnumerateBlocks); pascal OSErr SMPDrawMailer(WindowPtr window) __SMPMailer(2, kSMPDrawMailer); pascal OSErr SMPSetSubject(WindowPtr window, const RString *text) __SMPMailer(4, kSMPSetSubject); pascal OSErr SMPSetFromIdentity(WindowPtr window, AuthIdentity from) __SMPMailer(4, kSMPSetFromIdentity); pascal OSErr SMPAddAddress(WindowPtr window, SMPAddressType addrType, OCEPackedRecipient *address) __SMPMailer(5, kSMPAddAddress); pascal OSErr SMPAddAttachment(WindowPtr window, const FSSpec *attachment) __SMPMailer(4, kSMPAddAttachment); pascal OSErr SMPAttachDialog(WindowPtr window) __SMPMailer(2, kSMPAttachDialog); pascal OSErr SMPExpandOrContract(WindowPtr window, Boolean expand) __SMPMailer(3, kSMPExpandOrContract); pascal OSErr SMPMoveMailer(WindowPtr window, short dh, short dv) __SMPMailer(4, kSMPMoveMailer); pascal OSErr SMPBecomeTarget(WindowPtr window, Boolean becomeTarget, SMPMailerComponent whichField) __SMPMailer(5, kSMPBecomeTarget); pascal OSErr SMPGetComponentSize(WindowPtr window, unsigned short whichMailer, SMPMailerComponent whichField, unsigned short *size) __SMPMailer(7, kSMPGetComponentSize); pascal OSErr SMPGetComponentInfo(WindowPtr window, unsigned short whichMailer, SMPMailerComponent whichField, void *buffer) __SMPMailer(7, kSMPGetComponentInfo); pascal OSErr SMPGetListItemInfo(WindowPtr window, unsigned short whichMailer, SMPMailerComponent whichField, void *buffer, unsigned long bufferLength, unsigned short startItem, unsigned short *itemCount, unsigned short *nextItem, Boolean *more) __SMPMailer(16, kSMPGetListItemInfo); pascal OSErr SMPImage(WindowPtr window, SMPDrawImageProcPtr drawImageProc, long imageRefCon, Boolean supportsColor) __SMPMailer(7, kSMPImage); pascal OSErr SMPGetNextLetter(OSType *typesList, short numTypes, LetterDescriptor *adjacentLetter) __SMPMailer(5, kSMPGetNextLetter); pascal OSErr SMPGetLetterInfo(LetterSpec *mailboxSpec, SMPLetterInfo* info) __SMPMailer(4, kSMPGetLetterInfo); #ifdef __cplusplus } #endif #endif